#!/bin/bash
# 删除源安装文件

#1 获取输入参数个数，如果没有参数，直接退出
FILE_COUNT=$#
if((FILE_COUNT==0)); then
    echo "错误：未传递文件参数端口！"
    echo "用法：zookeeper.sh 2181"
    exit;
fi
# 开始下载
URL=https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz
source ../linux/download_unzip.sh "zookeeper" $URL

# 修改配置文件
if [ -f "$File_HOME/conf/zoo.cfg" ]; then
    rm -f $File_HOME/conf/zoo.cfg
fi
cp $File_HOME/conf/zoo_sample.cfg $File_HOME/conf/zoo.cfg

# 创建数据目录
if [ -d "$File_HOME/data" ]; then
    rm -rf $File_HOME/data
fi
mkdir $File_HOME/data


# 修改配置文件（数据目录，端口）
sed -i "s:dataDir=/tmp/zookeeper:dataDir=$File_HOME/data:g" $File_HOME/conf/zoo.cfg
sed -i "s:clientPort=2181:clientPort=$1:g" $File_HOME/conf/zoo.cfg

# 提示启动命令
echo "启动命令：$File_HOME/bin/zkServer.sh start"
echo "停止命令：$File_HOME/bin/zkServer.sh stop"
echo "状态命令：$File_HOME/bin/zkServer.sh status"
echo "客户端命令：$File_HOME/bin/zkCli.sh"
# 默认启动路径
# 启动命令：/opt/module/zookeeper/apache-zookeeper-3.6.0-bin/bin/zkServer.sh start
# 停止命令：/opt/module/zookeeper/apache-zookeeper-3.6.0-bin/bin/zkServer.sh stop
# 状态命令：/opt/module/zookeeper/apache-zookeeper-3.6.0-bin/bin/zkServer.sh status
# 客户端命令：/opt/module/zookeeper/apache-zookeeper-3.6.0-bin/bin/zkCli.sh
#
# zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动，也会占用8080端口。
# 通过查看zookeeper的官方文档，发现有3种解决途径：
# （1）.删除jetty。
# （2）修改端口。
# 修改方法的方法有两种：
#     一种是在启动脚本中增加 -Dzookeeper.admin.serverPort=你的端口号.
#     一种是在zoo.cfg中增加admin.serverPort=没有被占用的端口号
# （3）停用这个服务，在启动脚本中增加"-Dzookeeper.admin.enableServer=false"

# Zookeeper数据查看工具ZooInspector
# https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
# 进入目录ZooInspector\build，运行zookeeper-dev-ZooInspector.jar；
